def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        # 优化：如果一轮遍历没有交换，说明已有序，提前终止
        swapped = False
        # 每次遍历将最大的元素冒泡到末尾
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                # 交换相邻元素
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                swapped = True
        if not swapped:
            break  # 无交换说明已有序，结束排序
    return arr

# 示例用法
if __name__ == "__main__":
    example_list = [64, 34, 25, 12, 22, 11, 90]
    print("原始列表:", example_list)
    sorted_list = bubble_sort(example_list.copy())
    print("排序结果:", sorted_list)
